/**
 * 
 */
package com.evil.DB_Utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/******************************************
 * 工程名：Download<br>
 * 包名：com.evil.DB_Utils<br>
 * 时间：2016年6月10日 上午10:29:06<br>
 * 作者：白雨濃 evil<br>
 * 邮箱：evilbai@foxmail.com<br>
 * 内容：数据库链接入口函数   V1.0.1<br>
 ******************************************/
public class DB_Utils
{
	private final static String URL1 = "jdbc:mysql://localhost:3306/";
	private final static String URL2 = "?useUnicode=true&characterEncoding=utf-8&useSSL=false";

	public static Connection connection;


	/**
	 * 数据库链接
	 */
	public static DB_Utils connection(String DB_name, String name,
			String password)
	{
		if (connection == null)
		{
			try
			{
				Class.forName("com.mysql.jdbc.Driver").newInstance();
				connection = (Connection) DriverManager.getConnection(URL1
						+ DB_name + URL2, name, password);

				if (connection != null)
					System.out.println(DB_name + "数据库连接成功!");
				else
					System.out.println(DB_name + "数据库连接失败!");
			}
			catch (ClassNotFoundException | SQLException
					| InstantiationException | IllegalAccessException e)
			{
				e.printStackTrace();
			}
		}
		else
		{
			//System.out.println(DB_name + "数据库存在");
		}
		return new DB_Utils();
	}

	/**
	 * 关闭数据库链接
	 */
	public static void close_connection()
	{
		try
		{
			if (connection != null)
			{
				connection.close();
				System.out.println("数据库关闭");
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * 查询入口函数
	 * 
	 * @param url
	 * @return
	 */
	public static Query query(String url)
	{
		return new Query(url);
	}

	/**
	 * 插入入口函数
	 * 
	 * @param url
	 * @return
	 */
	public static Insert insert(String url)
	{
		return new Insert(url);
	}

	/**
	 * 更新入口函数
	 * 
	 * @param url
	 * @return
	 */
	public static Update update(String url)
	{
		return new Update(url);
	}

	/**
	 * 删除入口函数
	 * 
	 * @param url
	 * @return
	 */
	public static Delete delete(String url)
	{
		return new Delete(url);
	}

	/**
	 * 删除入口函数(无参)
	 * 
	 * @return
	 */
	public static Delete delete()
	{
		return new Delete();
	}

}
